from langchain.prompts import (
    SystemMessagePromptTemplate,
    ChatPromptTemplate,
    HumanMessagePromptTemplate,
)

from utils.utils import vue_output_parser
from llm.llm import llm
import uuid


def fix_vue(summary, filename=""):
    sys_tmpl = """

    请帮我完善组件样式，并修复语法错误

    代码优化要求：
    请根据组件内部逻辑自动计算并设置grid-column和grid-row样式属性
    注意grid-column的最大有效值为3（即grid-column: 3）
    修复代码中可能存在的语法错误

    样式规范：
    必须使用纯CSS语法（禁用SCSS/LESS等预处理器语法）
    确保所有样式规则符合标准CSS格式
    """

    human_tmpl = "输入内容：\n{summary}"

    system_prompt = SystemMessagePromptTemplate.from_template(sys_tmpl)
    human_prompt = HumanMessagePromptTemplate.from_template(human_tmpl)
    chat_prompt = ChatPromptTemplate.from_messages([system_prompt, human_prompt])

    chain = chat_prompt | llm | vue_output_parser()

    res = chain.invoke(
        {
            "summary": summary,
        }
    )

    if filename == "":
        filename = str(uuid.uuid4()) + ".vue"

    # 保存
    with open("./web/public/fix-format/" + filename, "w", encoding="utf-8") as f:
        f.write(res)

    print("filename", filename)

    return filename
